home *** CD-ROM | disk | FTP | other *** search
/ SuperHack / SuperHack CD.bin / CODING / 80X86 / WDOSX092.ZIP / EXAMPLE.ASM < prev    next >
Encoding:
Assembly Source File  |  1996-09-10  |  1.8 KB  |  156 lines

  1. ;SIMPLE SAMPLE FOR WDOSX
  2. ;DON'T TAKE THE CODE TOO SERIOUS, IT IS ONLY TO SHOW HOW TO WRITE APPS
  3. ;USING WDOSX!
  4.  
  5. .386p
  6. code    segment    use32
  7. assume    cs:code,ds:code
  8. palette    label    dword
  9.  
  10. ;STUPID PALETTE
  11.  
  12. I=0
  13. REPT 256
  14. R=((I/16) AND 3) * 4
  15. G=((I/4) AND 3) * 4
  16. B=(I AND 3) * 4
  17. Y=(I/64) AND 3
  18. R=R*Y
  19. G=G*Y
  20. B=B*Y
  21. IFDIF <R>,<64>
  22. ELSE
  23. R=63
  24. ENDIF
  25. IFDIF <G>,<64>
  26. ELSE
  27. G=63
  28. ENDIF
  29. IFDIF <G>,<64>
  30. ELSE
  31. G=63
  32. ENDIF
  33. db    R
  34. db    G
  35. db    B     
  36. I=I+1
  37. ENDM
  38. start:
  39.  
  40. ;ENABLE INTERRUPTS
  41.  
  42.     mov    ax,0901h
  43.     int    31h
  44.  
  45. ;ALLOC 2MB OF MEM. THIS IS NOT REALLY NEEDED, BUT IT DEMONSTRATES HOW TO
  46. ;USE THE "API"
  47.  
  48.         mov    edx,200000h
  49.     mov    ax,-1
  50.     int    21h
  51.  
  52. ;IF CARRY SET HERE, WE HAD A PROBLEM!
  53. ;SO WE SHOULD SAY: JC NOTIFY_THE_USER
  54.     mov    esp,edx        ;shows how to easy fix up stack
  55.  
  56. ;SET VIDEO MODE
  57.     mov    ax,13h
  58.     int    10h
  59.  
  60.  
  61. ;DISABLE VI
  62.  
  63.     mov    ax,0900h
  64.     int    31h
  65.  
  66. ;SET PALETTE
  67.  
  68.     cld
  69.     mov    esi,offset palette
  70.     mov    dx,03c8h
  71.     sub    al,al
  72.     out    dx,al
  73.     inc    dx
  74.     mov    cx,3*256
  75.     rep    outsb
  76.  
  77. ;ENABLE VI
  78.  
  79.     mov    ax,0901h
  80.     int    31h
  81.  
  82. ;GET A SELECTOR TO LOW MEMORY
  83.  
  84.     sub    ax,ax
  85.     mov    cx,1
  86.     int    31h
  87.     mov    bx,ax
  88.  
  89. ;SELECTOR IN BX, SET LIMIT TO 4G
  90.  
  91.     mov    ax,8
  92.     stc
  93.     sbb    ecx,ecx
  94.     sbb    edx,edx
  95.     int    31h
  96.  
  97. ;SET ACCESS RIGHTS
  98.  
  99.     lar    cx,bx
  100.     mov    cl,ch
  101.     and    cl,60h
  102.     or    cl,92h
  103.     mov    ch,0cfh
  104.     mov    ax,9
  105.     int    31h
  106.  
  107. ;SET BASE = 0
  108.  
  109.     sub    cx,cx
  110.     sub    dx,dx
  111.     mov    ax,7
  112.     int    31h
  113.  
  114. ;LOAD SELECTOR INTO ES
  115.  
  116.     mov    es,bx
  117.  
  118. ;DRAW SOME STUFF
  119.  
  120.     mov    edi,0a0000h
  121.     mov    bx,256
  122.  
  123.     sub    al,al
  124. bloop:
  125.     mov    esi,200
  126. eloop:
  127.     stosb
  128.     add    edi,319
  129.     dec    esi
  130.     jnz    eloop    
  131.     inc    al
  132.     sub    edi,64000-1
  133.     dec    bx
  134.     jnz    bloop
  135.  
  136. ;WAIT FOR ESC- KEYSTROKE
  137.  
  138. tloop:
  139.     sub    ax,ax
  140.     int    16h
  141.     cmp    ah,1
  142.     jnz    tloop
  143.  
  144. ;SET TEXT MODE
  145.  
  146.     mov    ax,3
  147.     int    10h
  148.  
  149. ;TERMINATE
  150.  
  151.     mov    ah,4ch
  152.     int    21h
  153.  
  154. code    ends
  155. end    start
  156.